JupyterLabから簡単にS3にアクセスしてみる
はじめに
データアナリティクス事業本部のkobayashiです。
分析業務をJupyterLabで行う場合にS3上のファイルを分析対象として取り扱うはよくあるかと思います。その際にS3上のファイルの存在確認やパスの確認もしくは中身を簡単に確認したいといった作業がしばしば出てきます。以前は別途AWSののマネージメントコンソールやJupyterLabでコードを記述していましたが、良さげな拡張機能があったので紹介します。
jupyterlab-s3-browserとは
JupyterLabの拡張機能でJupyterLab上のGUIでS3上のオブジェクトをブラウジングできるのもです。この拡張機能を使わない場合はAWSのマネージメントコンソールでオブジェクトを確認したうえで更に中身を確認したいときは手元にダウンロードしたり、JupyterLabでBoto3のlist_objects_v2
やdownload_fileobj
を使ったりしなくてはいけませんでしたのでS3上のファイルをJupyterLab上で扱う際にはjupyterlab-s3-browserを使うことで生産性を上げることができます。
GitHub - IBM/jupyterlab-s3-browser: A JupyterLab extension for browsing S3-compatible object storage
jupyterlab-s3-browserを使ってみる
では早速jupyterlab-s3-browserをインストールしてJupyterLabの画面で動作を確認してみます。
構築環境
- AmazonLinux2
- JupyterLab 3.6.1
- Python 3.7.16
インストール
インストールはJupyterLab上のTerminalを開きpipでインストールした上で拡張機能を有効にします。その後にJupyterLabの再起動が必要になります。
pip install jupyterlab-s3-browser jupyter serverextension enable --py jupyterlab_s3_browser
JupyterLab2の場合はインストールコマンドが若干異なり以下になります。こちらもインストール後にJupyterLabの再起動が必要になります。
jupyter labextension install jupyterlab-s3-browser pip install jupyterlab-s3-browser jupyter serverextension enable --py jupyterlab_s3_browser
またSageMakerでも使えるようでこちらもGitHub上にインストール方法があるのでご確認ください。
インストールした後にS3のオブジェクトを表示するために設定が必要になります。
EC2上のJupyterLab上でjupyterlab-s3-browserを使う際にはEC2にIAMロールが割り当てられてそのIAMロールにS3へのアクセスポリシーがついていれば特に設定する必要はありません。それ以外の環境で~/.aws/credentials
がない場合は基本的にはJupyterLab上でjupyterlab-s3-browserにアクセスするとS3のエンドポイント、アクセスキー、シークレットキーを入力する画面がでるので予めIAMでユーザーを作成しS3へのアクセス可能なポリシーをアタッチしアクセスキーとシークレットキーを発行しておきます。
なおMFAを設定している場合は現状アクセスできないようなのでMFAを設定しないIAMユーザーが必要です。
今回はEC2上で動かしていてEC2にロールを割り当てているので特に設定は行いません。
使ってみる
設定まで終わったのででは実際にJupyterLabの画面で動作を確認してみます。
jupyterlab-s3-browserをインストールするとサイドバーにS3バケットのアイコンが表示されます。これを押下するとIAMポリシーで設定されたバケット一覧が表示されます。
バケット名を押下していくとパス内のファイルが確認できます。またcsvファイル等一般的なテキストエディタで開く事ができるファイルはその中身を確認することもできます。 分析で使用するファイルの中身を簡単に確認したい場合には便利に使うことができます。
またファイルを右クリックすると表示されるコンテキストメニューからパス名をコピーする事ができます。ここでパスをコピーしておいてJupyter内のコードで使うといった便利な使い方もできます。
まとめ
JupyterLabの拡張機能でS3のオブジェクトをGUIで扱うことができるjupyterlab-s3-browserをインストールして使ってみました。インストールもpipで簡単に行える上、ファイル内容も確認できるのでJupyterでS3のオブジェクトを扱う際には追加するのをおすすめします。
最後まで読んで頂いてありがとうございました。